﻿//-------------------------------------------------------------------------------------
// All Rights Reserved , Copyright (C) 2011 , JamSoft TECH, Ltd .
//-------------------------------------------------------------------------------------
using System;
using System.Web;
using System.Web.UI;

// 本系统生成的类库
using DotNet.Utilities;

/// <remarks>
/// LogOn
/// 登录页面
/// 
/// 修改纪录
/// 
///	版本：1.0 2011.08.26 LiangMingMing  创建代码。 
/// <author>
///		<name>LiangMingMing</name>
///		<date>2011.08.26</date>
/// </author> 
/// </remarks>
public partial class LogOn : System.Web.UI.Page
{    
    // **********************************************************************************************
    // *                                                                                            * 
    // *                             Public Variate    公共变量                                     *
    // *                                                                                            * 
    // **********************************************************************************************

    #region public string ReturnURL 目的跳转页面
    /// <summary>
    /// 目的跳转页面
    /// </summary>
    public string ReturnURL
    {
        get
        {
            return this.txtReturnURL.Value;
        }
        set
        {
            this.txtReturnURL.Value = value;
        }
    }
    #endregion

    // **********************************************************************************************
    // *                                                                                            * 
    // *                             InitializeComponent  初始化                                    * 
    // *                                                                                            * 
    // **********************************************************************************************

    #region private void PageOnLoad() 页面初次加载时的动作
    /// <summary>
    /// 页面初次加载时的动作
    /// </summary>
    private void PageOnLoad()
    {
        // 设置为保存密码，默认是不保存密码
        Utilities.GetConfiguration();
        this.GetParameter();
        if (!string.IsNullOrEmpty(Request.QueryString["UserName"]))
        {
            this.txtUserName.Value = Request.QueryString["UserName"];
        }
        else
        {
            BaseUserInfo userInfo = Utilities.CheckCookie();
            if (userInfo != null)
            {
                // 其实这里表明已经成功登录了，现在是允许重复登录才好一些，这样系统出错的概率会少很多
            }
        }
        // 焦点是停留在哪里的设置
        if (string.IsNullOrEmpty(this.txtUserName.Value))
        {
            this.txtUserName.Focus();
        }
        else
        {
            this.txtPassword.Focus();
        }
    }
    #endregion

    // **********************************************************************************************
    // *                                                                                            * 
    // *                                       Method   操作方法                                    * 
    // *                                                                                            * 
    // **********************************************************************************************

    #region private void Localization() 多语言国际化加载
    /// <summary>
    /// 多语言国际化加载
    /// </summary>
    private void Localization()
    {
        // 多语言国际化加载
        ResourceManagerWrapper.Instance.LoadResources(Server.MapPath("Resource/Localization/"));
        //        
        BaseUserInfo userInfo = Utilities.GetUserInfo();
        // 获取语言信息
        this.GetLanguageResource(Utilities.GetCurrentLanguage(userInfo));
    }
    #endregion

    #region private void GetLanguageResource(string languages) 获取语言
    /// <summary>
    /// 获取语言
    /// </summary>
    /// <param name="languages">语言类型</param>
    private void GetLanguageResource(string languages)
    {
        // 标题
        this.Title = ResourceManagerWrapper.Instance.Get(languages, "LogOn.aspx");
        // 或者使用
        this.ltlLogonInfoOne.Text = ResourceManagerWrapper.Instance.Get(languages, "LogOn.aspx_ltlLogonInfoOne");
        // 内部统一管理系统
        this.ltlLogonInfoTwo.Text = ResourceManagerWrapper.Instance.Get(languages, "LogOn.aspx_ltlLogonInfoTwo");
        // 帐号登录
        this.ltlLogonInfoThree.Text = ResourceManagerWrapper.Instance.Get(languages, "LogOn.aspx_ltlLogonInfoThree");
        // 用户名
        this.ltlUserName.Text = ResourceManagerWrapper.Instance.Get(languages, "LogOn.aspx_ltlUserName");
        // 密码
        this.ltlPassword.Text = ResourceManagerWrapper.Instance.Get(languages, "LogOn.aspx_ltlPassword");
        // 自动登录
        this.ltlAutoLogon.Text = ResourceManagerWrapper.Instance.Get(languages, "LogOn.aspx_ltlAutoLogon");
        // 登录
        //this.btnLogOn.Text = ResourceManagerWrapper.Instance.Get(languages, "LogOn.aspx_btnLogOn");
        // 忘记密码
        this.ltlForgetPassword.Text = ResourceManagerWrapper.Instance.Get(languages, "LogOn.aspx_ltlForgetPassword");
        // 注册
        this.ltlRegister.Text = ResourceManagerWrapper.Instance.Get(languages, "LogOn.aspx_ltlRegister");
        // 协同办公平台
        this.ltloffice.Text = ResourceManagerWrapper.Instance.Get(languages, "LogOn.aspx_ltloffice");
        // 帮助中心
        this.ltlHelp.Text = ResourceManagerWrapper.Instance.Get(languages, "LogOn.aspx_ltlHelp");
    }
    #endregion

    #region public void GetParameters() 获得页面参数
    /// <summary>
    /// 获得页面参数
    /// </summary>
    public void GetParameter()
    {
        if (Page.Request["ReturnURL"] != null)
        {
            this.ReturnURL = Page.Request["ReturnURL"];
        }
        else
        {
            if (Request.UrlReferrer != null)
            {
                this.ReturnURL = Request.UrlReferrer.ToString();
            }
            if (this.ReturnURL.ToUpper().IndexOf("LOGON") > 0)
            {
                this.ReturnURL = "Default.aspx";
            }
        }
    }
    #endregion

    #region private void UserLogOn() 登录
    /// <summary>
    /// 登录
    /// </summary>
    private void UserLogOn()
    {
        // 获取用户名
        string userName = this.txtUserName.Value;
        // 获取密码
        string password = this.txtPassword.Value;
        // 用户登录
        this.UserLogOn(userName, password);
    }
    #endregion

    #region private void UserLogOn(string userName, string password) 用户的登录操作
    /// <summary>
    /// 用户的登录操作
    /// </summary>
    private void UserLogOn(string userName, string password)
    {
        string checkInput = string.Empty;
        try
        {
            string returnStatusCode = string.Empty;
            string returnStatusMessage = string.Empty;

            // 有什么权限的人才可以登录到系统
            string permissionItemCode = string.Empty;
            // permissionItemCode = "Project.Admin.Access";

            // 登录验证
            Utilities.LogOn(userName, password, permissionItemCode, this.chkPersistCookie.Checked, false, out returnStatusCode, out returnStatusMessage);

            // txtVerifyCode.Text = string.Empty;
            // 登录结果
            if (returnStatusCode.Equals(StatusCode.OK.ToString()))
            {
                // this.AfterLogOn();
                // 登录成功,重新定向到跳转的页面
                //异常:{由于代码已经过优化或者本机框架位于调用堆栈之上，无法计算表达式的值。}_
                //Page.Response.Redirect(this.ReturnURL);
                Response.Redirect(this.ReturnURL, false);
            }
            else
            {
                checkInput = "<script>alert('提示信息：" + returnStatusMessage + "');</script>";
                Page.ClientScript.RegisterStartupScript(this.GetType(), "message", checkInput);
                this.txtUserName.Focus();
            }
        }
        catch (System.Exception exception)
        {
            checkInput = "<script>alert('提示信息：登录失败，请检查你的用户名和密码是否输入有误。');</script>";
            Page.ClientScript.RegisterStartupScript(this.GetType(), "message", checkInput);
            this.txtUserName.Focus();
        }
    }
    #endregion

    // **********************************************************************************************
    // *                                                                                            * 
    // *                                       EventArgs    事件方法                                * 
    // *                                                                                            * 
    // ********************************************************************************************** 

    #region protected void Page_Load(object sender, EventArgs e) 页面初次加载时的动作
    /// <summary>
    /// 页面初次加载时的动作
    /// </summary>
    /// <param name="sender"></param>
    /// <param name="e"></param>
    protected void Page_Load(object sender, EventArgs e)
    {
        // 多语言国际化加载
        this.Localization();
        // 设置为保存密码，默认是不保存密码
        // this.cbRemember.Checked = BaseSystemInfo.SavePassword;
        if (!Page.IsPostBack)
        {
            this.PageOnLoad();
        }
    }
    #endregion    

    #region protected void btnLogOn_Click(object sender, EventArgs e) 登录
    /// <summary>
    /// 登录
    /// </summary>
    /// <param name="sender"></param>
    /// <param name="e"></param>
    protected void btnLogOn_Click(object sender, EventArgs e)
    {
        // 用户的登录操作
        /*为了登录方便暂时屏蔽
         * if (string.IsNullOrEmpty(this.txtUserName.Value.Trim()) || string.IsNullOrEmpty(this.txtPassword.Value.Trim()))
        {
            ScriptUtil.Alert("用户名和密码不能为空。");
            return;
        }*/

        /*
        string verifyCode = this.txtVerifyCode.Text;
        if (String.Compare(Session["VerifyCode"].ToString(), verifyCode, true) != 0)
        {
            txtVerifyCode.Text = "";
            txtPassword.Focus();
            ScriptUtil.Alert("验证码错误，请输入正确的验证码。");
            return;
        }
        */
        this.UserLogOn();
    }
    #endregion
}